﻿using System;
using System.Collections.Generic;
using System.Security.Principal;
using Wamm.ApplicationExceptions;
using Wamm.Model.Entities;

namespace Wamm.AbstractDataAccess {
    public interface ISession : IDisposable {
        IPrincipal Principal { get; set; }
        IRepository<Event> Events { get; }
        IRepository<EventType> EventTypes { get; }
        IRepository<Family> Families { get; }
        IRepository<FamilyPhoto> FamilyPhotos { get; }
        IRepository<Participant> Participants { get; }
        IRepository<ParticipantType> ParticipantTypes { get; }
        IRepository<Person> People { get; }
        IRepository<PersonPhoto> PersonPhotos { get; }
        void Commit(IList<RuleViolation> errors);
    }
}
